home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / mkmf / mkmf.hdrs < prev    next >
Text File  |  1992-06-10  |  2KB  |  85 lines

  1. #!/sprite/cmds/csh -f
  2. #
  3. # A script to generate (or regenerate) the Makefile for a directory
  4. # consisting solely of header files.
  5. #
  6. # We assume we were invoked from mkmf.  Parameters passed in from mkmf
  7. # through environment variables:
  8. #
  9. #    MKMFDIR        directory containing prototype makefiles
  10. #    MAKEFILE    name of makefile to create
  11. #    SUBTYPE        additional information, telling whether this
  12. #            is an X directory, Sprite directory, etc.
  13. #
  14.  
  15. #
  16. # Argument processing.  (Generalized form, even though just one flag so far.)
  17. #
  18. while ($#argv >= 1)
  19.     if ("$1" == '-x') then
  20.     set echo
  21.     endif
  22.     shift
  23. end
  24.  
  25. set subtype=$SUBTYPE
  26. set tmp=`expr $cwd : '.*/\(include.*\)$'`
  27. switch ($subtype)
  28.     case sprite:
  29.     set includedir=/sprite/lib/$tmp
  30.     breaksw
  31.     case x:
  32.     set includedir=/a/X/lib/$tmp
  33.     breaksw
  34.     default:
  35.     echo Unknown header subtype "$subtype"
  36.     exit 1
  37. endsw
  38. set pref='[a-z_A-Z]'
  39. set makefile=$MAKEFILE
  40.  
  41. if (-e $makefile.proto) then
  42.     set proto=$makefile.proto
  43. else
  44.     set proto="${MKMFDIR}/Makefile.hdrs"
  45. endif
  46.  
  47. echo "Generating a Makefile for $includedir headers using $proto"
  48.  
  49. set nonomatch
  50. set hdrs =( ${pref}*.h )
  51. #
  52. # Check to see if there were any headers.  The first check (size == 1)
  53. # is only necessary because the second check will cause an error if
  54. # hdrs contains more than 1024 bytes.
  55. #
  56. if ($#hdrs == 1) then
  57.     if ("$hdrs" == "${pref}*.h") set hdrs=()
  58. endif
  59. unset nonomatch
  60. set subDirs="`find * -type d ! -name RCS -prune -print`"
  61. set distdir=($DISTDIR)
  62.  
  63. #
  64. # Use sed to substitute various interesting things into the prototype
  65. # makefile. The code below is a bit tricky because some of the variables
  66. # being substituted in can be very long:  if the substitution is passed
  67. # to sed with "-e", the entire variable must fit in a single shell argument,
  68. # with a limit of 1024 characters.  By generating a separate script file
  69. # for the very long variables, the variables get passed through (to the
  70. # script file) as many arguments, which gets around the length problem.
  71. #
  72.  
  73. rm -f mkmf.tmp.sed
  74. echo s,"@(HDRS)",$hdrs,g > mkmf.tmp.sed
  75. cat $proto | sed -f mkmf.tmp.sed \
  76.     -e "s,@(DATE),`date`,g" \
  77.     -e "s,@(INCLUDEDIR),$includedir,g" \
  78.     -e "s,@(MAKEFILE),$makefile,g" \
  79.     -e "s,@(SUBDIRS),$subDirs,g" \
  80.     -e "s,@(TEMPLATE),$proto,g" \
  81.     -e "s,@(DISTDIR),$distdir,g" \
  82.     -e "s,@(TYPE),$subtype,g" \
  83.     > $makefile
  84. rm -f mkmf.tmp.sed
  85.